/**
 * 验证邮箱格式
 * @param {string} email 邮箱地址
 * @returns {boolean} 是否合法
 */
export function isValidEmail(email) {
  const reg = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
  return reg.test(email)
}

/**
 * 验证手机号格式
 * @param {string} phone 手机号
 * @returns {boolean} 是否合法
 */
export function isValidPhone(phone) {
  const reg = /^1[3-9]\d{9}$/
  return reg.test(phone)
}

/**
 * 验证密码强度
 * @param {string} password 密码
 * @returns {boolean} 是否合法
 */
export function isValidPassword(password) {
  // 至少包含6个字符
  return password.length >= 6
}

/**
 * 验证金额格式
 * @param {string|number} amount 金额
 * @returns {boolean} 是否合法
 */
export function isValidAmount(amount) {
  const reg = /^(([1-9]\d*)|\d)(\.\d{1,2})?$/
  return reg.test(amount.toString())
}

/**
 * 验证正整数
 * @param {string|number} num 数字
 * @returns {boolean} 是否合法
 */
export function isPositiveInteger(num) {
  const reg = /^[1-9]\d*$/
  return reg.test(num.toString())
}

/**
 * Element Plus 表单验证规则
 */
export const formRules = {
  // 必填项
  required: (message = '该字段不能为空') => ({
    required: true,
    message,
    trigger: 'blur'
  }),
  
  // 邮箱
  email: (message = '请输入有效的邮箱地址') => ({
    validator: (rule, value, callback) => {
      if (!value || isValidEmail(value)) {
        callback()
      } else {
        callback(new Error(message))
      }
    },
    trigger: 'blur'
  }),
  
  // 手机号
  phone: (message = '请输入有效的手机号码') => ({
    validator: (rule, value, callback) => {
      if (!value || isValidPhone(value)) {
        callback()
      } else {
        callback(new Error(message))
      }
    },
    trigger: 'blur'
  }),
  
  // 密码
  password: (message = '密码长度至少为6个字符') => ({
    validator: (rule, value, callback) => {
      if (!value || isValidPassword(value)) {
        callback()
      } else {
        callback(new Error(message))
      }
    },
    trigger: 'blur'
  }),
  
  // 金额
  amount: (message = '请输入有效的金额') => ({
    validator: (rule, value, callback) => {
      if (!value || isValidAmount(value)) {
        callback()
      } else {
        callback(new Error(message))
      }
    },
    trigger: 'blur'
  }),
  
  // 正整数
  positiveInteger: (message = '请输入正整数') => ({
    validator: (rule, value, callback) => {
      if (!value || isPositiveInteger(value)) {
        callback()
      } else {
        callback(new Error(message))
      }
    },
    trigger: 'blur'
  })
} 